<?php

/*-----------------------------------------------------------*\
|                 - Елементи системи -                       |
|                 Author:  Skalden Russell                   |
|                 Last modify: 20130104                      |
\*-----------------------------------------------------------*/

// Захист скрипта від довільного запуску
if(!defined('TSUE_SEC')) {
	header('Content-Type: text/html; charset=utf-8');
	require_once( '../data/messages/hacking.attempt.php' );
	die( $TSUE_MSG );
}

define( 'NEWS_PER_PAGE', $MALINA_CONF['news_pp'] );
define( 'MALINA_THEME',	$MALINA_CONF['theme_cur'] );

class CRes
{

	// Функція повертає необхідний елемент
	function get_element( $str )
	{
		switch( $str )
		{
			// Class for test
			case "Hello": 
				return $this->el_hello();
			break;
			// Отримати дату і час
			case "DTime": 
				return $this->el_dtime();
			break;
			case "newstrack": 
				return $this->el_newstrack();
			break;
			// Побудова меню
			case "logicalmenu":
				return $this->el_logicalmenu();
			break;
			default: return 0;
		}
	}
	
	
	// Повертає вітання
	public function el_hello()
	{
		return "<b><i> Hello Kalyna web engine </i></b>";
	}
	
	// Дата і час
	public function el_dtime()
	{ 
		return date("m-d-y G:i");
	}
	
	// Стрічка новин для неавторизованих користувачів
	public function el_newstrack()
	{
		global $SQL_CONF;
		$rows = array();
		$content = "";
		$pContent = new CContent("", "");
		$sectext = new CSecurity();
		
		$sql = new cMysql();
		$sql->connect($SQL_CONF['host'], $SQL_CONF['user'], $SQL_CONF['pass'], $SQL_CONF['dbname']);
		
		$rows = $sql->fetch_assoc("SELECT COUNT(*) as count FROM `". $SQL_CONF['pref'] ."newstrack`");
		$page = $sectext->digit( $_GET['page'] );
		$splitter = make_splitter( $page, $rows[0]['count'], NEWS_PER_PAGE, '?page=' );
		
		$rows = $sql->fetch_array("SELECT `title`, `pagedescr`, `author`, `date`, `views`, `newsid` FROM `". $SQL_CONF['pref'] ."newstrack` ORDER BY `newsid` DESC LIMIT ". $splitter['begin'] .", ". NEWS_PER_PAGE ." ");
		$sql->close();
		
		if(count($rows)-1 == 0)
		{
			return "<h1>No added post yet !</h1>";
		}
		else
		{
			for($i = 0; $i < count($rows)-1; $i++)
			{
				$pContent->SetReplace( 'newsid',	$sectext->digit( $rows[$i]['newsid'] ) );
				$pContent->SetReplace( 'title', 	$sectext->decode( $rows[$i]['title'] ) );
				$pContent->SetReplace( 'descrnews', $sectext->decode( $rows[$i]['pagedescr'] ) );;
				$pContent->SetReplace( 'author', 	$sectext->decode( $rows[$i]['author'] ) );
				$pContent->SetReplace( 'date', 		$sectext->decode( $rows[$i]['date'] ) );
				$pContent->SetReplace( 'views', 	$sectext->digit( $rows[$i]['views'] ) );
				$content .= $pContent->getContent( 'styles/' . MALINA_THEME . '/newstrack_element.html', 'r' );
			}
			
			
			$pContent->SetReplace( 'scrollpage', $splitter['splitter']);
			$pContent->SetReplace( 'newscontent', $content );
			$content = $pContent->getContent( 'styles/light/newstrack.html', 'r' );
			return $content;
		}
	}
	
	// Побудова меню розділів матеріалів
	public function el_logicalmenu()
	{
		/* Категорія -> Статті - Файли - Самоперевірка */
		/////////////////////////////////////////////////
		global $SQL_CONF;
		
		$rows = array();
		$content = "";
		$pContent = new CContent();
		$sectext = new CSecurity();
		
		$sql = new cMysql();
		$sql->connect($SQL_CONF['host'], $SQL_CONF['user'], $SQL_CONF['pass'], $SQL_CONF['dbname']);
		
		// Категорія
		$cat_rows = $sql->fetch_array("SELECT * FROM `" . $SQL_CONF['pref'] . "materialscat`");
		$cat_size = count( $cat_rows ) - 1;
		
		// Сортування категорій за не спаданням
		$tmp = array();
		for($i = 0; $i < $cat_size; $i++)
		{
			for($j = $i + 1; $j < $cat_size; $j++)
			{
				if($cat_rows[$i]['priority'] > $cat_rows[$j]['priority'] )
				{
					$tmp = $cat_rows[$j];
					$cat_rows[$j] = $cat_rows[$i];
					$cat_rows[$i] = $tmp;
				}
			}
		}
		
		
		for($i = 0; $i < $cat_size; $i++)
		{
			// Запит файлів
			$file_rows = $sql->fetch_assoc("SELECT count(*) as count FROM `" . $SQL_CONF['pref'] ."materialfile` WHERE `categoryid`='" . $cat_rows[$i]['categoryid'] . "'");
			// Запит матеріалів
			$mat_rows = $sql->fetch_assoc("SELECT count(*) as count FROM `" . $SQL_CONF['pref'] ."materialpublic` WHERE `categoryid`='" . $cat_rows[$i]['categoryid'] . "'");
			
			$pContent->SetReplace( "categoryname",	$sectext->decode( $cat_rows[$i]['name'] ) );
			$pContent->SetReplace( "countpublic",	$mat_rows[0]['count'] );
			$pContent->SetReplace( "countfile",	$file_rows[0]['count'] );
			$pContent->SetReplace( "categoryid",	$sectext->digit( $cat_rows[$i]['categoryid'] ) );
			
			$content .= $pContent->getContent( 'styles/' . MALINA_THEME . '/menu_element.html', 'r' );
		
		}
		
		$sql->close();
		
		
		return $content;
	}
	
}



class el_Login_Form
{
	var $sContent;
	private function Prepare()
	{
		$pContent = new CContent("D", "LoginForm");
		$this->sContent = $pContent->getContent("templates/login_element_form.html", "r");
	}
	
	public function getText()
	{
		$this->Prepare();
		return $this->sContent;
	}
}

class el_Logined_Form
{
	private function Prepare()
	{
		$pContent = new CContent("D", "LoginedForm");
		return $pContent->getContent("templates/logined_element_form.html", "r");
	}
	
	function getText()
	{
		return $this->Prepare();
	}
}


class el_UserName
{
	function getText()
	{
		$pVar = new CVaribles();
		return $pVar->get_session_var("LOGIN_NAME");
	}
}


/////////////////////////////////////////////////////////////////////////////////////
///								 Інформер публікацій
class el_News_block
{
	var $Content;
	
	function cuttext( $txt, $len )
	{
		$sBuf = "";
		$i = 0;
		
		for($i; $i <= $len; $i++)
		{
			$sBuf.= $txt[$i];
		}
		
		if($len < strlen($txt))
		{
			$sBuf .= "...";
		}
		
		return $sBuf;
	}
	
	function prepare()
	{	
		settype($pVarible, "object");
		$this->pVarible = new CVaribles();
		$this->pVarible = $this->pVarible->get_pointer();
		$_CFG = $this->pVarible->get_cfg();
		
		$rows = array();
		$pSql = new CMysql();
		$pSql->connect();
		$pSql->selectdb();
		$rows = $pSql->fetch_array("SELECT * FROM TNews_Info 
		WHERE cat_id <> '979'
		ORDER by `id` DESC 
		LIMIT ".$_CFG['pi_count']);
		
		// зебра = ))))
		$pContent = new CContent("D", "LoginedForm");
		for($i=0; $i < count($rows)-1; $i++)
		{
			$_SESSION['ZEBRA']?$_SESSION['ZEBRA'] = 0 : $_SESSION['ZEBRA'] = 1;
			$row_cat = $pSql->fetch_array("SELECT `name` FROM TCat WHERE id='".$rows[$i]['cat_id']."'");
			// Замінні піделементи
			$pContent->SetReplace("cat", $row_cat[0]['name']);
			$pContent->SetReplace("Title", $this->cuttext($rows[$i]['title'], $_CFG['pi_strlen']));
			$pContent->SetReplace("ID", "id=".$rows[$i]['id']);
			$pContent->SetReplace("views", " ".$rows[$i]['views']);
			$pContent->SetReplace("date", $rows[$i]['add_date']);
			$pContent->SetReplace("comments", " ".$rows[$i]['coments']);
			$pContent->SetReplace("author", $rows[$i]['user_name']);
			$this->Content .= $pContent->getContent("templates/news_block_element.html", "r");
		}
		$pSql->close();
	}
	function getText()
	{
		$this->prepare();
		$pContent = new CContent("D", "LoginedForm");
		$pContent->SetReplace("NewsElement", $this->Content );
		return $pContent->getContent("templates/news_block.html", "r");
	}
}



// Збираємо меню з категорій
class el_Menucat
{
	var $smenu;
	
	function cmp($a, $b) 
	{
		if ($a['prior'] == $b['prior']) {
			return 0;
		}
		return ($a['prior'] < $b['prior']) ? -1 : 1;
	}
	
	function getText()
	{
		$rows = array();
		$pSql = new CMysql();
		$pSql->connect();
		$pSql->selectdb();
		$rows = $pSql->fetch_array("SELECT `id` , `name` , `par`, `prior` FROM TCat");
		$pSql->close();
		$this->smenu = "";
	
		//print_r($rows);
		// Сортуємо масив
		usort($rows, array("el_Menucat", "cmp"));
		//print_r($rows);
		
		for($i=0; $i < count($rows); $i++)
		{
			// Знаходимо розділ
			if(intval($rows[$i]['par']) == -1)
			{
				$this->smenu .= '<hl><font color="#1569C7"><b>[ '.$rows[$i]['name']." ]</b></font></hl><hr />";
				// Знаходимо його нащадків
				for($j=0; $j < count($rows)-1; $j++)
				{
					if(intval($rows[$i]['id']) == intval($rows[$j]['par']))
					{
						$this->smenu .= "<a href=\"?razd=".$rows[$j]['id']."\">".$rows[$j]['name']."</a><hr />";
					}
				}
			}
			else if(intval($rows[$i]['par']) == -2)
			{
				$this->smenu .= "<a href=\"?razd=".$rows[$i]['id']."\">".$rows[$i]['name']."</a><hr />";
			}
		}
		return $this->smenu;
	}
}
?>
